import { Observer } from '../patterns';

/**
 * - 作者: DoooReyn
 * - 日期: 2023.11.01
 * - 名称: BusyIndicator
 * - 描述: 示忙器
 */
export class BusyIndicator extends Observer {
    /** 任务数量 */
    private __count: number;

    constructor() {
        super();
        this.__count = 0;
    }

    /** 剩余数量 */
    get count() {
        return this.__count;
    }

    /** 添加一个任务 */
    increase() {
        ++this.__count;
        this.notify();
    }

    /** 删除一个任务 */
    decrease() {
        --this.__count;
        this.notify();
    }

    /** 重置 */
    reset() {
        this.__count = 0;
        this.notify();
    }

    /** 是否繁忙 */
    get busy() {
        return this.__count > 0;
    }
}
